//歌曲信息
interface Song {
  id: number,          // 歌曲ID
  name: string,        // 歌曲名称
  subTitle?: string,   // 第二标题
  mvId?: number,       // MV ID（可选）
  singer: Tag[],       // 歌手
  album: string,       // 专辑
  albumPic: string,    // 专辑封面
  alia?: string[],     // 别名（可选）
  duration: number,    // 时长（以秒为单位）
  url: string,         // 歌曲链接
  fee?: boolean,       // 0: 免费或无版权，1: VIP 歌曲，4: 购买专辑，8: 非会员可免费播放低音质，会员可播放高音质及下载
  license?: string,    // 版权信息
  publishTime: string  // 发布时间
}
//本地音乐
interface LocalSong {
  name: string,        // 歌曲名称
  singer: { id: number; name: string }[],   // 歌手
  duration: number,    // 时长（以秒为单位）
  size: number,       // 大小
  url: string,         // 歌曲链接
}
//歌单信息
interface PlayList {
  id: number,                // 歌曲ID
  name: string,               // 歌曲名称
  coverImgUrl?: string,       //歌单封面
  officialTags: string[],     // 歌手
  description: string,        // 专辑
  playCount: number,          //播放量
  trackCount: number,         //歌曲数量
  createUser: string,         //歌手
  avatarUrl: string,          //头像
  userId: number             //歌手id
}

/**
 * 历史播放歌单
 */
interface HistoryPlayList {
  id: number,                // 歌曲ID
  name: string,               //歌曲名称
  coverImgUrl?: string,       //歌单封面
  playTime: number,           //播放时间
  osText: string,             //播放设备
  trackCount?: number,         //歌曲数量
  nickname: string,         //创建人
  avatarUrl: string,          //创建人头像
  userId: number             //创建人id
}
interface PlayListDetail {
  id: number,                 // 歌单ID
  name: string,               // 歌曲名称
  description: string,        // 歌曲名称
  tags: string[],             // 标签
  coverImgUrl?: string,       //歌单封面
  createTime: string,         //创建时间
  nickname: string,           // 创建人
  avatarUrl: string,          // 创建人头像
  userId: number,             // 创建人头像
  playCount: number,          //播放量
  subscribedCount: number,    //收藏数
  songCount: number,          //歌曲数
}
//推荐歌单
interface TuijianGedan {
  id: number,
  name: string,
  imageUrl: string,
  bgcolor: string,
  gradation: string,
  songs: string[]
}
//专辑
interface Album {
  id: number;
  name: string;
  blurPicUrl: string;
  artists: Tag[];
  publishTime: string;
  size: number; //专辑内歌曲数量
}
interface Banner {
  banner1Id: number,
  imgurl: string,
  url: string,
  banner2Id: number,
  imgurl2: string,
  url2: string
}
interface TopGeDan {
  id: number,
  name: string,
  coverImgUrl: string,
  updateFrequency: string,
  description: string,
  tracks: TopGeDanTracks[]
}
interface TopGeDanTracks {
  first: string,
  second: string
}
interface Tag {
  id: number,
  name: string
}
interface Singer {
  id: number,
  name: string,
  picUrl: string,
  musicSize: number, //歌曲数
  albumSize: number, //专辑数
  followed: boolean, //是否关注
  alias: string   //别名
}
interface Common {
  commentId:number;
  content: string;
  timeStr: string;
  nickname: string;
  avatarUrl: string;
  userId: number;
  vipType: number;
  userType: number;
  vipRights: string;
  likedCount: number;
  beReplied: CommonbBeReplied[];
}
interface CommonbBeReplied {
  commentId:number;
  content: string;
  nickname: string;
  avatarUrl: string;
  userId: number;
}
//关注列表
interface Follow {
  userId:number;
  nickname:String;
  signature:String;
  avatarUrl:String;
  followed:boolean; //是否已关注
  follows:number; //关注数量
  followeds:number; //粉丝数量
  gender:number; //1男2女
  playlistCount:number; //歌单数
  userType:number; //用户类型，0用户，>0歌手
  mutual:boolean; //是否互关
}
//私信内容
interface PrivateMsg {
  lastMsgId:number;
  newMsgCount:number;
  nickname:string;
  userId:number;
  userType:number;
  avatarUrl:string;
  lastMsgTime:string;
  type:number;
  title:string;
  msg:string;
}
// 修改播放器支持的通用音乐类型
interface PlayableSong {
  id?: number | string  // 网络音乐是number，本地音乐用url作为id
  name: string
  singer: { id: number; name: string }[]
  duration: number
  url: string
  albumPic?: string    // 本地音乐可能没有封面
  fee?: number         // 本地音乐不需要此字段
  album?: string       // 本地音乐不需要此字段
}
export type { Song,PlayList,Album,Banner,TuijianGedan,TopGeDan,TopGeDanTracks,PlayListDetail,Tag,Singer,Common,CommonbBeReplied,HistoryPlayList,Follow,PrivateMsg,LocalSong,PlayableSong };
